///////////////////////////////////////////////////////////////////////////////
// File:        Main.cc
// Author:      671643387@qq.com
// Description:
///////////////////////////////////////////////////////////////////////////////

#if defined(__WINDOWS__)
#include <crtdbg.h>
#endif

#include <csignal>
#include "Log.hpp"
#include "ProgressBar.hpp"
#include "Realmd.hpp"

///////////////////////////////////////////////////////////////////////////////
static void signal_handler(int);

///////////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
#if defined(__WINDOWS__)
    //_CrtSetBreakAlloc(158);
#endif

    {
        INFO_LOG("starting realmd");
        if (Realmd::GetMe()->Initialize())
        {
        signal(SIGINT, signal_handler);
        INFO_LOG("realmd is running");
        Realmd::GetMe()->Run();
        }
        INFO_LOG("realmd stopped");
        Realmd::GetMe()->Free();
    }
    
#if defined(__WINDOWS__)
    _CrtDumpMemoryLeaks();
#endif
    return 0;
}

///////////////////////////////////////////////////////////////////////////////
void signal_handler(int sig)
{
    if (sig != SIGINT)
        return;

    Realmd::GetMe()->Stop();
}